// 知识点1：sort()需要随机访问迭代器，所以不能用于list和forward_list.

// 知识点2：对于list和forward_list应优先使用其成员函数版本的算法，皆返回void.

// 知识点3：remove()删除元素，reverse()反转元素顺序，sort()排序，unique()删除相同元素

// 知识点4：链表类型还定义了splice成员算法，其实链表数据结构所特有的，主要用于合并两个链表
#include <algorithm>
#include <fstream>
#include <functional>
#include <iostream>
#include <iterator>
#include <list>
#include <numeric>
#include <string>
#include <vector>

using namespace std;
using namespace placeholders; //占位符的命名空间

int main(int argc, char **argv) {
  string a[10] = {"sdc", "sddc", "sdec", "sfdc", "sdec",
                  "sdc", "sdc",  "fsdc", "sadc", "fsdc"};
  list<string> list1(a, a + 10);
  list1.sort();   //使用其成员函数版本的算法，排序
  list1.unique(); //删除相同元素
  for (auto it1 = list1.begin(); it1 != list1.end(); ++it1) {
    cout << *it1 << " ";
  }

  return 0;
}